/*
    7-3 学生成绩排序
给出一组学生名单（姓名和成绩），请输出按成绩从大到小排序后的结果（名次和姓名）。
成绩相同的人拥有相同的名次，且按姓名的字典序从小到大排列。题目保证学生姓名没有重复。

输入：
7
KongDezhen 94
FuTaotao 93
HuYu 94
XuJiecen 94
WuSuqi 96
ChenDa 93
HuNianbo 95

输出：
1 WuSuqi
2 HuNianbo
3 HuYu
3 KongDezhen
3 XuJiecen
6 ChenDa
6 FuTaotao
*/
#include<bits/stdc++.h>
using namespace std;
struct student{
	string id;
	int score;
}stu[10005];
//！！！！！！！！！
bool cmp(student a,student b){
	if(a.score==b.score)
		return a.id<b.id;
	return a.score>b.score;
}
int main(){
	int n;cin>>n;
	for(int i=0;i<n;i++)
		cin>>stu[i].id>>stu[i].score;
	sort(stu,stu+n,cmp);
    //！！！！！！！！！！！ 这里是输出并列排名
    //定义一个1，刚开始输出的是第一名
	int t=1;
	for(int i=0;i<n;i++){
		cout<<t<<" "<<stu[i].id<<endl;
        //当下一名和当前名次的成绩不一样时，让排名t=i+2
		if(stu[i+1].score!=stu[i].score)
			t=i+2;
	}
}